library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity registrador_instrucao is
	port(
		Li_neg, Ei_neg, CLK, CLR : in std_logic; -- neg significa negado (risco em cima)
		entrada_bw               : in std_logic_vector(7 downto 0); -- conteudo do local de memoria enderecado no barramento W
      saida_bw                 : out std_logic_vector(3 downto 0):="ZZZZ"; -- nibble inferior, cujo destino eh o barramento W
      saida_cs                 : out std_logic_vector(3 downto 0):="1010" -- nibble superior, cujo destino eh o controlador/sequencializador
	);
end registrador_instrucao;

architecture arquitetura of registrador_instrucao is
	signal tmp_saida_bw : std_logic_vector(3 downto 0);
   signal tmp_saida_cs : std_logic_vector(3 downto 0):="1010";
   
   begin
   	saida_cs<=tmp_saida_cs;
       
      process (CLK,Li_neg)
      begin
      	if (CLK'event and CLK='1') then
	        	if (Li_neg='0') then
   	      	tmp_saida_cs<=entrada_bw(7 downto 4);
   	         tmp_saida_bw<=entrada_bw(3 downto 0);
   	      end if;
   	   end if;
      end process;
       
      process (CLR)
      begin
         if CLR'event then
	         if(CLR='1') then
   	    		tmp_saida_cs<="0000";
   	      end if;
   	   end if;
      end process;
      
      process (Ei_neg)
      begin
      	if Ei_neg'event then
	         if(Ei_neg='0') then
   	   	 	saida_bw<=tmp_saida_bw;
   	      else
   	       	saida_bw<="ZZZZ";
   	      end if;
   	   end if;
      end process;
      
end arquitetura;
